package com.yindian.cos.easy.security.properties;

import com.yindian.cos.easy.security.constant.ProviderName;
import lombok.Data;
import org.springframework.http.HttpMethod;

/**
 * qq登录配置项
 *
 * @author zhangchuanhao
 * @create 2018/11/19
 */
@Data
public class QqProperties {

    /**
     * 是否启用
     */
    private Boolean enable = false;

    /**
     * 登录地址不能和redirectUri一样否则拦截器无法放行该地址
     */
    private String loginUrl = "/api/social/" + ProviderName.QQ;

    /**
     * 请求方式
     */
    private String method = HttpMethod.GET.name();

    /**
     * 授权码地址
     */
    private String authorizationCodeUrl = "https://graph.qq.com/oauth2.0/authorize";

    /**
     * 授权类型，此值固定为code
     */
    private String responseType = "code";

    /**
     * 申请QQ登录成功后，分配给应用的appid
     */
    private String appId;

    /**
     * 申请QQ登录成功后，分配给应用的appSecret
     */
    private String appSecret;

    /**
     * 网址域名
     */
    private String domain;

    /**
     * 成功授权后的回调地址，必须是注册appid时填写的主域名下的地址，建议设置为网站首页或网站的用户中心。注意需要将url进行URLEncode。
     */
    private String redirectUri;

    /**
     * client端的状态值。用于第三方应用防止CSRF攻击，成功授权后回调时会原样带回。请务必严格按照流程检查用户与state参数状态的绑定。
     */
    private String state = "easy_security";

    /**
     * 请求用户授权时向用户显示的可进行授权的列表。
     * 如果要填写多个接口名称，请用逗号隔开。
     * 例如：scope=get_user_info,list_album,upload_pic,do_like
     * 不传则默认请求对接口get_user_info进行授权。
     */
    private String scope;

    /**
     * 仅PC网站接入时使用。
     * 用于展示的样式。不传则默认展示为PC下的样式。
     * 如果传入mobile，则展示为mobile端下的样式。
     */
    private String display;

    /**
     * accessToken地址
     */
    private String accessTokenUrl = "https://graph.qq.com/oauth2.0/token";

    /**
     * 授权类型，在本步骤中，此值为authorization_code
     */
    private String grantType = "authorization_code";

    /**
     * 获取openId
     */
    private String openIdUrl = "https://graph.qq.com/oauth2.0/me";

    /**
     * 获取用户信息
     */
    private String userInfoUrl = "https://graph.qq.com/user/get_user_info";

    /**
     * 拦截的执行顺序
     */
    private int order = 500;
}
